package jm.nj.demo10mian.demo03;



/*
* 递归:方法调用自己
* 适用于:方法中运算主体不变,但运算的时候,参与运算的方法参数会发生变化
*
* 递归分两种直接递归   间接递归
* 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法，B方法调用C方法，C方法调用A方法。
*
* 注意:
* 1.递归一定要有 条件 限定,保证递归能停下来,否则会发生栈内存溢出
* 2.在递归中有限定条件是,递归次数不宜太多,否则会发生栈内存溢出
* 3.构造方法禁止递归
* */
public class Demo01DiGui {
    public static void main(String[] args) {
        //a();
        b(1);
    }
    //3.构造方法:禁止递归
    public Demo01DiGui(){
      //  Demo01DiGui();//Method call expected
    }
    //2.在递归中虽然有限定条件，但是递归次数不能太多。否则也会发生栈内存溢出
    private static void b(int i) {
        if(i==6000){
            return;
        }
        System.out.println(i);
        b(++i);//--写前边,先--,--后使用改变后的值参与操作
    }

    //1.递归一定要有条件限定，保证递归能够停止下来，否则会发生栈内存溢出。
    //java.lang.StackOverflowError 
    private static void a() {
        a();
    }
}
